package com.ls.demo.bean;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 灯状态(0=关；1=开)
 * @author liShan
 * @date 2019/9/4 20:42
 */
@Getter
@Setter
@ToString
public class RoomLampInfo extends BaseInfo{

    /**
     * 扩展灯 1（空调高）
     */
    private byte extend1;
    /**
     * 扩展灯 2（空调中）
     */
    private byte extend2;
    /**
     * 扩展灯 3（空调低）
     */
    private byte extend3;
    /**
     * 扩展灯 4（空调电磁阀）
     */
    private byte extend4;
    /**
     * 扩展灯 5
     */
    private byte extend5;
    /**
     * 扩展灯 6
     */
    private byte extend6;
    /**
     * 扩展灯 7
     */
    private byte extend7;
    /**
     * 扩展灯 8
     */
    private byte extend8;
    /**
     * 卫生间排风扇
     */
    private byte toiletFan;
    /**
     * 卫灯 3
     */
    private byte guard3;
    /**
     * 卫灯 2
     */
    private byte guard2;
    /**
     * 卫灯 1
     */
    private byte guard1;
    /**
     * 第 12 路调光灯状态
     */
    private byte dimming12;
    /**
     * 第 11 路调光灯状态
     */
    private byte dimming11;
    /**
     * 第 10 路调光灯状态
     */
    private byte dimming10;
    /**
     * 第 9 路调光灯状态
     */
    private byte dimming9;
    /**
     * 第 8 路调光灯状态
     */
    private byte dimming8;
    /**
     * 第 7 路调光灯状态
     */
    private byte dimming7;
    /**
     * 第 6 路调光灯状态
     */
    private byte dimming6;
    /**
     * 第 5 路调光灯状态
     */
    private byte dimming5;
    /**
     * 第 4 路调光灯状态
     */
    private byte dimming4;
    /**
     * 第 3 路调光灯状态
     */
    private byte dimming3;
    /**
     * 第 2 路调光灯状态
     */
    private byte dimming2;
    /**
     * 第 1 路调光灯状态
     */
    private byte dimming1;
    /**
     * 落地灯
     */
    private byte floor;
    /**
     * 房灯
     */
    private byte room;
    /**
     * 吧灯
     */
    private byte bar;
    /**
     * 右阅读灯
     */
    private byte rightReading;
    /**
     * 左阅读灯
     */
    private byte leftReading;
    /**
     * 衣柜灯
     */
    private byte wardrobe;
    /**
     * 廊灯
     */
    private byte corridor;
    /**
     * 夜灯
     */
    private byte night;
    /**
     * 浴室排风扇
     */
    private byte bathroomFan;
    /**
     * 浴室灯 3
     */
    private byte bathroom3;
    /**
     * 浴室灯 2
     */
    private byte bathroom2;
    /**
     * 浴室灯 1
     */
    private byte bathroom1;
    /**
     * 触发源
     */
    private short touchSource;
    /**
     * 触发面板号
     */
    private short touchPanel;

    public RoomLampInfo() {
    }

    private RoomLampInfo(Builder builder) {
        super(builder);
        this.extend1 = builder.extend1;
        this.extend2 = builder.extend2;
        this.extend3 = builder.extend3;
        this.extend4 = builder.extend4;
        this.extend5 = builder.extend5;
        this.extend6 = builder.extend6;
        this.extend7 = builder.extend7;
        this.extend8 = builder.extend8;
        this.toiletFan = builder.toiletFan;
        this.guard3 = builder.guard3;
        this.guard2 = builder.guard2;
        this.guard1 = builder.guard1;
        this.dimming12 = builder.dimming12;
        this.dimming11 = builder.dimming11;
        this.dimming10 = builder.dimming10;
        this.dimming9 = builder.dimming9;
        this.dimming8 = builder.dimming8;
        this.dimming7 = builder.dimming7;
        this.dimming6 = builder.dimming6;
        this.dimming5 = builder.dimming5;
        this.dimming4 = builder.dimming4;
        this.dimming3 = builder.dimming3;
        this.dimming2 = builder.dimming2;
        this.dimming1 = builder.dimming1;
        this.floor = builder.floor;
        this.room = builder.room;
        this.bar = builder.bar;
        this.rightReading = builder.rightReading;
        this.leftReading = builder.leftReading;
        this.wardrobe = builder.wardrobe;
        this.corridor = builder.corridor;
        this.night = builder.night;
        this.bathroomFan = builder.bathroomFan;
        this.bathroom3 = builder.bathroom3;
        this.bathroom2 = builder.bathroom2;
        this.bathroom1 = builder.bathroom1;
        this.touchSource = builder.touchSource;
        this.touchPanel = builder.touchPanel;
    }

    public static Builder builder(){
        return new Builder();
    }

    public static class Builder extends BaseInfo.BaseBuilder<Builder> {

        private byte extend1;
        private byte extend2;
        private byte extend3;
        private byte extend4;
        private byte extend5;
        private byte extend6;
        private byte extend7;
        private byte extend8;
        private byte toiletFan;
        private byte guard3;
        private byte guard2;
        private byte guard1;
        private byte dimming12;
        private byte dimming11;
        private byte dimming10;
        private byte dimming9;
        private byte dimming8;
        private byte dimming7;
        private byte dimming6;
        private byte dimming5;
        private byte dimming4;
        private byte dimming3;
        private byte dimming2;
        private byte dimming1;
        private byte floor;
        private byte room;
        private byte bar;
        private byte rightReading;
        private byte leftReading;
        private byte wardrobe;
        private byte corridor;
        private byte night;
        private byte bathroomFan;
        private byte bathroom3;
        private byte bathroom2;
        private byte bathroom1;
        private short touchSource;
        private short touchPanel;

        @Override
        Builder self() {
            return this;
        }

        public Builder extend1(byte extend1){
            this.extend1 = extend1;
            return this.self();
        }

        public Builder extend2(byte extend2){
            this.extend2 = extend2;
            return this.self();
        }

        public Builder extend3(byte extend3){
            this.extend3 = extend3;
            return this.self();
        }

        public Builder extend4(byte extend4){
            this.extend4 = extend4;
            return this.self();
        }

        public Builder extend5(byte extend5){
            this.extend5 = extend5;
            return this.self();
        }

        public Builder extend6(byte extend6){
            this.extend6 = extend6;
            return this.self();
        }

        public Builder extend7(byte extend7){
            this.extend7 = extend7;
            return this.self();
        }

        public Builder extend8(byte extend8){
            this.extend8 = extend8;
            return this.self();
        }

        public Builder toiletFan(byte toiletFan){
            this.toiletFan = toiletFan;
            return this.self();
        }

        public Builder guard3(byte guard3){
            this.guard3 = guard3;
            return this.self();
        }

        public Builder guard2(byte guard2){
            this.guard2 = guard2;
            return this.self();
        }

        public Builder guard1(byte guard1){
            this.guard1 = guard1;
            return this.self();
        }

        public Builder dimming12(byte dimming12){
            this.dimming12 = dimming12;
            return this.self();
        }

        public Builder dimming11(byte dimming11){
            this.dimming11 = dimming11;
            return this.self();
        }

        public Builder dimming10(byte dimming10){
            this.dimming10 = dimming10;
            return this.self();
        }

        public Builder dimming9(byte dimming9){
            this.dimming9 = dimming9;
            return this.self();
        }


        public Builder dimming8(byte dimming8){
            this.dimming8 = dimming8;
            return this.self();
        }

        public Builder dimming7(byte dimming7){
            this.dimming7 = dimming7;
            return this.self();
        }

        public Builder dimming6(byte dimming6){
            this.dimming6 = dimming6;
            return this.self();
        }

        public Builder dimming5(byte dimming5){
            this.dimming5 = dimming5;
            return this.self();
        }

        public Builder dimming4(byte dimming4){
            this.dimming4 = dimming4;
            return this.self();
        }

        public Builder dimming3(byte dimming3){
            this.dimming3 = dimming3;
            return this.self();
        }

        public Builder dimming2(byte dimming2){
            this.dimming2 = dimming2;
            return this.self();
        }

        public Builder dimming1(byte dimming1){
            this.dimming1 = dimming1;
            return this.self();
        }

        public Builder floor(byte floor){
            this.floor = floor;
            return this.self();
        }

        public Builder room(byte room){
            this.room = room;
            return this.self();
        }

        public Builder bar(byte bar){
            this.bar = bar;
            return this.self();
        }

        public Builder rightReading(byte rightReading){
            this.rightReading = rightReading;
            return this.self();
        }

        public Builder leftReading(byte leftReading){
            this.leftReading = leftReading;
            return this.self();
        }

        public Builder wardrobe(byte wardrobe){
            this.wardrobe = wardrobe;
            return this.self();
        }

        public Builder corridor(byte corridor){
            this.corridor = corridor;
            return this.self();
        }

        public Builder night(byte night){
            this.night = night;
            return this.self();
        }

        public Builder bathroomFan(byte bathroomFan){
            this.bathroomFan = bathroomFan;
            return this.self();
        }

        public Builder bathroom3(byte bathroom3){
            this.bathroom3 = bathroom3;
            return this.self();
        }

        public Builder bathroom2(byte bathroom2){
            this.bathroom2 = bathroom2;
            return this.self();
        }

        public Builder bathroom1(byte bathroom1){
            this.bathroom1 = bathroom1;
            return this.self();
        }

        public Builder touchSource(short touchSource){
            this.touchSource = touchSource;
            return this;
        }

        public Builder touchPanel(short touchPanel){
            this.touchPanel = touchPanel;
            return this;
        }

        public RoomLampInfo build() {
            return new RoomLampInfo(this);
        }

    }

}
